shiro 550
原理
apache shiro框架提供了记住密码的功能,用户登录成功后会生成经过aes加密并base64编码的cookie,在服务端会对rememberme的cookie的值,先base64解码然后aes解密在反序列化,因为aes的秘钥是写死在代码里面,所以导致了反序列化rce漏洞产生
工具的利用原理
该工具主要是首先爆破key的值,然后将恶意命令进行序列化然后aes加密,然后base64编码通过cookie的值进行传输给服务器,服务器解码解密最后反序列化执行命令
修复方式
上面提到这个key会嵌入代码里面,所以我们只需要将这个key的值不断地变换,攻击者就无法爆破出来或者时间来不及
流量特征
他的流量特征是发送包会有rememberme字段,返回包cookie处有一大段的base64编码
攻击流程
漏洞验证
1.
通过勾选登录页面的“记住我”选项并进行登录,抓包观察请求和响应中的rememberMe字段。
2.
使用shiro_attack-2.2.jar工具或python脚本(shiro_exploit.py)进行密钥检测和爆破,确认是否能获取到固定的密钥kPH+bIxk5D2deZiIxcaaaA==。
漏洞利用
1.
构造Payload:使用ysoserial.jar工具生成针对CommonsCollections5的序列化payload,利用已知的固定密钥进行AES加密和Base64编码。
2.
监听与反弹Shell:在攻击机上监听指定端口(如6666),使用bash命令和base64编码生成反弹shell命令,通过构造的cookie发送到靶机,触发漏洞执行命令。
3.
生成记住我字段: 使用shiro.py脚本对攻击机上的JRMP服务地址进行AES加密和Base64编码,生成最终的rememberMe字段。
反弹Shell
将恶意修改后的rememberMe Cookie发送到靶机,靶机解密后执行反序列化操作,从而连接到攻击机的监听端口,实现反弹shell。